package com.aaa.dang.modules.user.dao;

import com.aaa.dang.common.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * @author JinChaoLiang
 * @calss QY87
 * @description 描述
 * @date 2018/12/14
 */
@Mapper
@Component
public interface IUserDao {

    /**
     * 得到所有用户和房间信息
     * @return
     */
    List<Map<String, Object>> getList(Map<String,Object> query);

    /**
     * 得到某个用户的详细信息
     * @param id
     * @return
     */
    Map<String,Object> getInfoById(int id);

    /**
     * 查询总数
     * @param query
     * @return
     */
    int getCount(Map<String, Object> query);

    /**
     * 获取账号是否存在
     * @param username
     * @param psw
     * @return
     */

    int login(String username,String psw);

    /***
     * 查询手机号是否存在
     * @param username
     * @return
     */
    int checkPhone(String username);

    /***
     * 注册用户
     * @param username
     * @param password
     * @return
     */
    int addUser(@Param("username") String username, @Param("psw") String password);

    /**
     * 手机端修改密码
     * @param map
     */
    void updatepsw(Map<String, Object> map);

    /**
     * 手机端完善资料
     * @param map
     */
    void updateinfo(Map<String, Object> map);

    /**
     * 手机端获取信息
     * @return
     */
    Map<String, Object> getUserPartialInfo(String username);

    /**
     * 获取用户信息
     * @param username
     * @return
     */

   User getUser(String username);

    /***
     * 根据楼栋id获得所有使用中的房间
     * @param id
     * @return
     */
    List<Map<String,Object>> getRoomsByBuildingId(Integer id);

    /***
     * 根据条件获得所有房间信息
     * @param data
     * @return
     */
    List<Map<String, Object>> getRoomsByQuery(Map<String, Object> data);

    /***
     * 添加报修数据
     * @param data
     * @return
     */
    int addRepairapply(Map<String, Object> data);

    /***
     * @param userId
     * @return
     */
    List<Map<String, Object>> getRepairApplyByUserId(Integer userId);

    /***
     * 修改用户的申请状态
     * @param data
     * @return
     */
    int updateStatusById(Map<String, Object> data);

    /***
     * 根据用户id获得所有申请入住记录
     * @param userId
     * @return
     */
    List<Map<String, Object>> getStayApplyByUserId(Integer userId);

    /***
     * 修改入住申请状态
     * @param data
     * @return
     */
    int updateStayApplyStatus(Map<String, Object> data);

    /***
     * 获得所有退宿申请数据
     * @param userId
     * @return
     */
    List<Map<String, Object>> getRetireApply(Integer userId);

    /**
     * 修改退宿申请状态
     * @param data
     * @return
     */
    int updateRetireApplyStatus(Map<String, Object> data);

    /***
     * 获得交押金记录
     * @param userId
     * @return
     */
    List<Map<String, Object>> getDepositApply(Integer userId);

    /***
     * 根据条件修改押金申请信息
     * @param map
     * @return
     */
    int updateDepositApplyStatus(Map<String, Object> map);
    /***
     * 获得交租金记录
     * @param userId
     * @return
     */
    List<Map<String, Object>> getPayRentApply(Integer userId);
    /***
     * 根据条件修改租金申请信息
     * @param map
     * @return
     */
    int updatePayRentApplyStatus(Map<String, Object> map);

    /**
     * 得到统计信息
     * @return
     */
    Integer getCountInfo();

    /**
     * 得到用户信息通过id
     * @param id
     * @return
     */
    User getUserById(int id);
}
